#ifndef TILEBEHAVIOUR_H
#define TILEBEHAVIOUR_H

/*!
 * \file tilebehaviour.h
 * \brief Header of classes CTileBehaviour, CTileStraightBehaviour and CTileWeirdBehaviour
 * \author Benjamin Toueg
 * \version 20.05.09
 */

#include "vector3.h"

class CTileBehaviour
{
public:
    enum eBehaviour
    {
        STRAIGHT,
        WEIRD
    };

    CTileBehaviour() {}
    virtual ~CTileBehaviour() {}
    virtual bool givePtr(Vector3d,const Vector3d&) = 0;
    virtual eBehaviour myBehaviour() = 0;
};

class CTileStraightBehaviour: public virtual CTileBehaviour
{
public:
    CTileStraightBehaviour() {}
    virtual ~CTileStraightBehaviour() {}
    bool givePtr(Vector3d,const Vector3d&);
    eBehaviour myBehaviour() { return STRAIGHT; };
};

class CTileWeirdBehaviour: public virtual CTileBehaviour
{
public:
    CTileWeirdBehaviour() {}
    virtual ~CTileWeirdBehaviour() {}
    bool givePtr(Vector3d,const Vector3d&);
    eBehaviour myBehaviour() { return WEIRD; };
};

#endif // TILEBEHAVIOUR_H
